package cn.iocoder.yudao.module.erp.service.purchaseinorder;

import jakarta.validation.*;
import cn.iocoder.yudao.module.erp.controller.admin.purchaseinorder.vo.*;
import cn.iocoder.yudao.module.erp.dal.dataobject.purchaseinorder.PurchaseInOrderDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

/**
 * ERP采购入库审批单 Service 接口
 *
 * @author TQY
 */
public interface PurchaseInOrderService {

    /**
     * 创建ERP采购入库审批单
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    String createPurchaseInOrder(@Valid PurchaseInOrderSaveReqVO createReqVO);

    /**
     * 更新ERP采购入库审批单
     *
     * @param updateReqVO 更新信息
     */
    void updatePurchaseInOrder(@Valid PurchaseInOrderSaveReqVO updateReqVO);

    /**
     * 删除ERP采购入库审批单
     *
     * @param id 编号
     */
    void deletePurchaseInOrder(String id);

    /**
     * 获得ERP采购入库审批单
     *
     * @param id 编号
     * @return ERP采购入库审批单
     */
    PurchaseInOrderSupplierSaveReqVO getPurchaseInOrder(String id);

    /**
     * 获得ERP采购入库审批单分页
     *
     * @param pageReqVO 分页查询
     * @return ERP采购入库审批单分页
     */
    PageResult<PurchaseInOrderDO> getPurchaseInOrderPage(PurchaseInOrderPageReqVO pageReqVO);

    void updateStatusPurchaseInOrder(@Valid PurchaseInOrderSaveReqVO updateReqVO);

    void updatePurchaseInOrderReStatus(@Valid PurchaseInOrderSupplierSaveReqVO updateReqVO);
}